<!-- 检索式语法说明 -->
<template>
  <div class="">
    <p class="rh-tit">
      1、命令词后面的关键词仅1个时，可直接跟在后面；如果超过2个以上，则需要用括号括起来并使用and、or连接；
    </p>
    <p class="rh-tit">
      2、检索式不使用命令词时，系统自动检索词进行扩展后生成检索式，使用命令词后则不再进行扩展；
    </p>
    <p class="rh-tit">
      3、检索关键词中间带空格时需要加上双引号，如A/("UNIVERSITY OF
      OXFORD”)；括号也可以改变逻辑运算的优先级。
    </p>
    <el-table
      class="table"
      :data="tableData"
      style="width: 100%"
      border
      :span-method="objectSpanMethod"
      header-row-class-name="hc"
    >
      <el-table-column prop="name" label="" width="160"> </el-table-column>
      <el-table-column prop="code" label="符号" width="160"> </el-table-column>
      <el-table-column prop="effect" label="作用">
        <template slot-scope="scope">
          <p v-for="(item, idx) in scope.row.effect" :key="idx">{{ item }}</p>
        </template>
      </el-table-column>
      <el-table-column prop="example" label="示例">
        <template slot-scope="scope">
          <p v-for="(item, idx) in scope.row.example" :key="idx">{{ item }}</p>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [
        {
          name: "逻辑运算符",
          code: "AND",
          effect: [
            "要求符号两边的关键词同时存在，对位置顺序没有要求；",
            "或者要求符号两边的搜索条件同时满足；",
            "当关键词之间存在空格且不存在逻辑运算符时，进行AND操作",
          ],
          example: ["A/(太阳能 AND 电池)", "TTL/纳米 AND AN/清华大学"],
          rowspan: 3,
        },
        {
          name: "逻辑运算符",
          code: "OR",
          effect: [
            "要求符号两边的关键词至少出现任意一个;",
            "或者要求符号两边的搜索条件至少满足一个",
          ],
          example: ["A/(发动机 OR 引擎)", "TTL/非晶硅电池 OR PN/H01L31/075"],
          rowspan: 0,
        },
        {
          name: "逻辑运算符",
          code: "AND NOT",
          effect: [
            "要求排除符号后面的检索条件；",
            "或者要求匹配符号后面搜索条件的结果从匹配符号前面搜索条件的结果中排除；",
          ],
          example: ["A/电视AND NOT A/等离子", "AN/华为科技 AND NOT ABST/手机"],
          rowspan: 0,
        },
        {
          name: "通配符",
          code: "*",
          effect: [
            "代表0个或多个字符，主要用在关键词的中间位置使用；",
            "在一个关键词中只能用一个，且不能与其他通配符同时使用；",
          ],
          example: ["EP200*B2", "小*车"],
          rowspan: 3,
        },
        {
          name: "通配符",
          code: "？",
          effect: [
            "代表1个字符，可以用多个'?'来表示指定数量的字符（不超过5个），用在关键词的中间位置使用",
          ],
          example: ["gra???ne", "US???7654", "小??车"],
          rowspan: 0,
        },
        {
          name: "通配符",
          code: "#",
          effect: [
            "代表0个或1个字符，主要用在关键词的中间位置使用；",
            "在一个关键词中只能用一个，且不能与其他通配符同时使用；",
          ],
          example: ["m#tor", "小#车"],
          rowspan: 0,
        },
        {
          name: "位置符",
          code: "$Wn",
          effect: [
            "两个无位置顺序的关键词之间间隔不超过n个单词或汉字(1≤n≤99)；",
            "位置符的优先级高于逻辑运算符；",
            "单次对单个检索字段中的两个值进行限定的语法，仅限于两个值，不适用于连接多值进行检索m，适用字段符号：A/ B/ ABST/ TTL/",
          ],
          example: ["data $W2 line", "ABST:(太阳能 $W2 ", "电池 $W2 硅)"],
          rowspan: 3,
        },
        {
          name: "位置符",
          code: "$PREn",
          effect: [
            "两个限定位置顺序的关键词之间间隔不超过n个单词或汉字(0≤n≤99)；",
            "位置符的优先级高于逻辑运算符；",
            "单次对单个检索字段中的两个值进行限定的语法，仅限于两个值，不适用于连接多值进行检索m，适用字段符号：A/、ABST/、 TTL/",
          ],
          example: ["data $PRE2 line", "ABST:(太阳能 $PRE2", "电池 $PRE2 硅)"],
          rowspan: 0,
        },
        {
          name: "位置符",
          code: "$SEN",
          effect: [
            "限定两个或多个关键词出现在同一个句子中;",
            "位置符的优先级高于逻辑运算符；",
            "单次对单个检索字段中的两个值进行限定的语法，仅限于两个值，不适用于连接多值进行检索m，适用字段符号：A/、ABST/、 TTL/",
          ],
          example: ["ABST/(太阳能 $SEN ", "电池 $SEN 汽车)"],
          rowspan: 0,
        },
      ],
    };
  },

  methods: {
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      //   console.log(row, column, rowIndex, columnIndex);
      if (columnIndex == 0) {
        if (row.rowspan != 0) {
          return {
            rowspan: row.rowspan,
            colspan: 1,
          };
        } else {
          return {
            rowspan: 0,
            colspan: 0,
          };
        }
      }
    },
  },
};
</script>
<style lang="scss" scoped>
.table {
  margin: 10px 0 20px;
  ::v-deep .hc {
    color: #fff;
    .el-table__cell {
      background-color: $mainColor;
    }
  }
  p {
    line-height: 30px;
  }
}
.rh-tit {
  margin: 20px 0;
  text-indent: 2em;
  line-height: 30px;
}
</style>
